package com.linjiahao.nettyGateway.cluster;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Objects;

/**
 * @author xiejizhe
 * @date 2021-09-07
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ServerNode {

    private String instanceId;

    private String host;

    private int port;

    private String clusterName;





    @Override
    public boolean equals(Object obj) {
        /**
         * 1、自反性 ：对于任何非空的参考值x  x.equals(x)应该返回true
         * 2、对于任何非空引用值x和y x.equals(y)应该返回true当且仅当y.equals(x)回报true
         * 3、于任何非空引用值x、y和z，如果x.equals(y)返回true，y.equals(z)回报true ，然后x.equals(z)应该返回true
         * 4、对于任何非空引用值x和y，多次调用x.equals(y)始终返回true或始终返回false ，没有设置中使用的信息equals比较上的对象被修改
         * 5、x.equals(null)应该返回false
         */
        if (obj == null) {
            return false;
        }

        if (!(obj instanceof ServerNode)) {
            return false;
        }

        ServerNode serverNode = (ServerNode) obj;

        if (this == serverNode) {
            return true;
        }

        if (Objects.equals(this.getHost(), serverNode.getHost())) {
            return true;
        }

        return false;

    }

}
